home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-10-29 | 6.9 KB | 161 lines | [ttro/ttxt] |
- SoundSprocket 1.7
- Release Notes
- -----------------
-
- Please report all bugs using the bug reporter on Apple Developer Connection:
-
- <http://developer.apple.com/bugreporter/index.html>
-
- Release Components
- ------------------
-
- SoundSprocket Release Notes - this file
- SoundSprocket.h - the header file to compile with
- SoundSprocketLib - release version of the library
- SoundSprocketDebugLib - debugging version of the library
- SoundSprocket Filter - the filter component
- SoundSprocket Debug Filter - debugging version of the filter
-
- WARNING: don't place both the debugging and non-debugging versions of the
- library in the search path or you will not be sure which version you will be
- using.
-
- Either SoundSprocket Filter or SoundSprocket Debug Filter must be present in
- the Extensions folder at boot- and run-time. Only one of them should be
- present or you will not be sure which version you are using.
-
- Dependencies
- ------------
-
- SoundSprocket requires Mac OS 8.1 or later to load and operate.
-
-
-
- Changes from version 1.0:
- -----------------------
- The rendering engine has been completely replaced with the enCompass positional
- audio technology from Spatializer Audio Laboratories, Inc. This new renderer
- should be backward compatible with existing apps using SoundSprocket v1.0,
- however, there are some changes that developers should be aware of:
-
- The new renderer supports two resolutions: hi-res is CPU load 0, and low-res
- is CPU load 1. The hi-res mode consumes approximately 4.8% of a 300 MHz CPU per
- source; low-res is 2.6% per source. The reverb adds an additional 5.0% per source.
- The renderer is currently running at 44.1 kHz, so sample rate convert your sounds
- to 44.1 to avoid rate conversion by the Sound Manager.
-
- The SSpConfigureSetup high-level library call should no longer be used. Use the
- low-level interface to get and set the speaker (audio display) configuration. In
- addition, use kSSpSpeakerKind_Stereo for 2-channel speakers and
- kSSpSpeakerKind_Headphones for headphones. Mono output is not supported.
-
- The roomSize parameter for the reverb now specifies one of three different room
- sizes. A size of 0 to 10 meters uses the small room model, 10 to 20 meters uses
- the medium room, and 20 to 40 meters for the large reverb. Alternatively use 1,
- 11, and 21 for the small, medium, and large rooms respectively.
-
- The automatic switching to and from ambient mode in certain conditions has been
- removed from the high-level lib and filter. Ambient mode will only be active if
- it has been turned on by a call to SSpSource_SetMode or the sourceMode
- field in the SSpLocalizationData struct is modified directly.
-
- There are now OpenGL calling-convention versions of all of the API calls which
- take vectors, points or matrices. Function names ending in 'fv' take an array of
- floats as an argument. These floats are in x, y, z order. The functions that
- deal with transforms take a 4x4 matrix of floats. These matrices are made up of
- 16 floats in column-major order (same as OpenGL but the opposite of C).
-
-
- Special Considerations
- ----------------------
-
- - If you play a sound using SndPlay, SndStartFilePlay or by sending a
- bufferCmd, when the sound ends, the reverb will stop abruptly. Worse,
- this reverb tail is stored in internal buffers, and will continue when
- the next sound is played in the sound channel if care is not taken.
-
- To fix the reverb from stopping abruptly for sounds played with these
- methods, pad the sounds with enough silence to ensure that the reverb
- has quieted down.
-
- To fix the reverb tail from showing up in the next sound, the buffers
- can be flushed by sending a quietCmd to the buffer. In general it is
- a good idea to send a quietCmd between sounds separated by a gap in
- time.
-
- - To stop a sound while it is playing, but continue the reverb, you need
- to pause the sound, wait for enough time for the reverb to run out, and
- stop the sound. If you are playing the sound with a bufferCmd then
- this is a sequence of commands, rateCmd(0), wait(interval) and
- quietCmd. If you are playing the sound from disk then this is
- a SndPauseFilePlay followed after the interval by a SndStopFilePlay.
-
- API/Documentation Conflicts
- ---------------------------
-
- - The SoundSprocket Filter contains resources that define a pane of the
- Sound control panel. The pane allows the user to control the speaker
- kind and angle, much like SSpConfigureSpeakerSetup. You may choose to
- install the Sound control panel with your game, or provide a menu or
- button to access SSpConfigureSpeakerSetup, or both.
-
- - After the documentation was completed, it was decided that the SSpSetup
- names were not specific enough. We renamed them to SSpSpeakerSetup.
- Some #defines are included in SoundSprocket.h to allow code to be
- written per the documentation. But please use the new, longer names,
- as the #defines will be removed in a later release.
-
- OLD NAME NEW NAME
- siSSpSetup siSSpSpeakerSetup
- SSpSetupData SSpSpeakerSetupData
- SSpConfigureSetup SSpConfigureSpeakerSetup
-
- - The SndGetInfo selector siSSpFilterVersion and datatype
- SSpFilterVersionData have been removed in favor of an alternate way of
- accessing filter version information. The following function may be
- used for this purpose.
-
- // **************************** GetSSpFilterVersion ****************************
- // Finds the manufacturer and version number of the SoundSprocket filter that
- // may be installed. inManufacturer should be the manufacturer code specified
- // at the installation time, which may be zero to allow any manufacturer.
- // If no error is encountered, outManufacturer is set to the actual manufacturer
- // code and outMajorVersion and outMinorVersion are set to the component
- // specification level and manufacturer's implementation revision, respectively.
- OSStatus GetSSpFilterVersion(
- OSType inManufacturer,
- OSType* outManufacturer,
- UInt32* outMajorVersion,
- UInt32* outMinorVersion)
- {
- OSStatus err;
- ComponentDescription description;
- Component componentRef;
- UInt32 vers;
-
- // Set up the component description
- description.componentType = kSoundEffectsType;
- description.componentSubType = kSSpLocalizationSubType;
- description.componentManufacturer = inManufacturer;
- description.componentFlags = 0;
- description.componentFlagsMask = 0;
-
- // Find a component matching the description
- componentRef = FindNextComponent(nil, &description);
- if (componentRef == nil) return couldntGetRequiredComponent;
-
- // Get the component description (for the manufacturer code)
- err = GetComponentInfo(componentRef, &description, nil, nil, nil);
- if (err != noErr) return err;
-
- // Get the version composite
- vers = (UInt32) GetComponentVersion((ComponentInstance) componentRef);
-
- // Return the results
- *outManufacturer = description.componentManufacturer;
- *outMajorVersion = HiWord(vers);
- *outMinorVersion = LoWord(vers);
-
- return noErr;
- }
-